check that tracker is actually working before using it. Fixes bug #479197.
authorJosselin Mouette <jmouette@src.gnome.org>
Sun, 25 May 2008 14:19:16 +0000 (14:19 +0000)
committerJosselin Mouette <jmouette@src.gnome.org>
Sun, 25 May 2008 14:19:16 +0000 (14:19 +0000)
        * gtk/gtksearchenginetracker.c: (_gtk_search_engine_tracker_new):
        check that tracker is actually working before using it. Fixes
        bug #479197.

svn path=/trunk/; revision=20149

ChangeLog
gtk/gtksearchenginetracker.c

index 9970dff51ec8345175ebe1bf5008b3b6bbedc20e..da64fa1dbfae4f91d687327d401755e6f439246b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2008-05-25  Josselin Mouette  <joss@malsain.org>
+
+       reviewed by: Matthias Clasen
+
+       * gtk/gtksearchenginetracker.c: (_gtk_search_engine_tracker_new):
+        check that tracker is actually working before using it. Fixes
+        bug #479197.
+
 2008-05-25  Sven Neumann  <sven@gimp.org>
 
        * gtk/gtkdrawingarea.c (gtk_drawing_area_realize)
index 7d357f202e77438e43257fb809615a3cc5eed5a0..36c90c38c12b43b6ac26c84261e7549a3d6d6ab2 100644 (file)
@@ -35,6 +35,7 @@ typedef void (*TrackerArrayReply) (char **result, GError *error, gpointer user_d
 
 static TrackerClient * (*tracker_connect) (gboolean enable_warnings) = NULL;
 static void           (*tracker_disconnect) (TrackerClient *client) = NULL;
+static int             (*tracker_get_version) (TrackerClient *client, GError **error) = NULL;
 static void            (*tracker_cancel_last_call) (TrackerClient *client) = NULL;
 
 static void (*tracker_search_metadata_by_text_async) (TrackerClient *client, 
@@ -56,6 +57,7 @@ static struct TrackerDlMapping
 #define MAP(a) { #a, (gpointer *)&a }
   MAP (tracker_connect),
   MAP (tracker_disconnect),
+  MAP (tracker_get_version),
   MAP (tracker_cancel_last_call),
   MAP (tracker_search_metadata_by_text_async),
   MAP (tracker_search_metadata_by_text_and_location_async),
@@ -285,6 +287,7 @@ _gtk_search_engine_tracker_new (void)
 {
   GtkSearchEngineTracker *engine;
   TrackerClient *tracker_client;
+  GError *err = NULL;
 
   open_libtracker ();
 
@@ -296,6 +299,18 @@ _gtk_search_engine_tracker_new (void)
   if (!tracker_client)
     return NULL;
 
+  if (!tracker_get_version)
+    return NULL;
+
+  tracker_get_version (tracker_client, &err);
+
+  if (err != NULL)
+    {
+      g_error_free (err);
+      tracker_disconnect (tracker_client);
+      return NULL;
+    }
+
   engine = g_object_new (GTK_TYPE_SEARCH_ENGINE_TRACKER, NULL);
 
   engine->priv->client = tracker_client;